The present invention relates to apparatus for receiving moving pictures.
It has become common to transmit moving pictures as coded bitstreams. Various types of headers are embedded in these bitstreams: examples include a stream header that describes the coding format of the moving picture as a whole, a frame header that describes the coding format of a particular frame, and a packet header that describes the coding format of a packet. The apparatus that receives the bitstream analyzes the header information and decodes the bitstream accordingly.
The stream header, which includes such basic information as the picture size and the general type of coding employed throughout the bitstream, may be placed at the beginning of the bitstream, or may be repeated at suitable intervals in the bitstream, so that the bitstream can be decoded from an intermediate point. The stream header may also be transmitted on a separate channel from the bitstream itself.
A frame header, which is inserted at the beginning of a frame, includes information pertaining to the coding of the frame, such as the method of prediction of the frame and picture quality parameters. The content of the frame headers varies, depending on the stream header.
When a frame is divided into packets, the packet headers include such information as the block number of the first block in the packet. (For coding purpose, a frame is divided into rectangular blocks of pixels, commonly into 16×16 blocks of pixels.) The packet headers may also include information similar to that in the frame headers, so that the packet contents can be decoded even if a preceding packet was lost. The frame header itself may be treated as a type of packet header in this case.
In the decoding process, first the stream header is analyzed; then the other headers are analyzed on the basis of the stream header, and the data are decoded on the basis of the header information. If reception of the bitstream starts at an intermediate point, decoding cannot begin until a stream header is received in the bitstream, or until a stream header is obtained from another channel.
Various strategies are used to conceal packet loss and other types of data loss or corruption. When part of a frame is missing, the missing part may be interpolated from the other parts of the frame, enabling display of the moving picture to continue without interruption. Alternatively, the damaged frame may be replaced by the preceding frame; in this case, several succeeding frames may also have to be replaced by the preceding frame, until a frame that was coded non-predictively (an intra-frame) is received.
One problem found in conventional receiver apparatus is that decoding cannot begin until a stream header has been received. Moreover, even when a stream header is received, it is not possible to start decoding immediately unless the frame that follows the stream header is an intra-frame. The reason is that the conventional apparatus discards frames received before the stream header, and cannot decode predictively coded frames (inter-frames) that refer back to the discarded frames.
Solving this problem by frequent insertion of stream headers, each followed by an intra-frame, is unattractive because intra-frame coding is inefficient. Each time an intra-frame is inserted, it is necessary to increase the amount of coded data or decrease the picture quality, or do both. Increasing the amount of coded data tends to delay transmission of the data, so in real-time transmission, it may be impossible to insert frequent intra-frames. Some transmitters take the extreme measure of transmitting only one intra-frame, at the beginning of the bitstream, making it impossible to start decoding from an intermediate point.
In a packet transmission environment in which packet loss occurs, inadequate error concealment causes other problems. The decoded picture may be distorted, for example, or may disappear or freeze for extended periods of time, to the consternation of the viewer.